home *** CD-ROM | disk | FTP | other *** search
-
- file_include("script/share/prog_border.lua")
- file_include("script/"..codename.."/prog_ships.lua")
-
- local function xor1(value)
- if odd(value) then
- return value - 1
- else
- return value + 1
- end
- end
- local function xor2(value)
- if isIn(value, {2, 3, 6}) then
- return value - 2
- else
- return value + 2
- end
- end
-
- local function shinkShip(ship)
- if objekty.afaze == -1 then
- objekty:setEffect("none")
- objekty.shiftY = 0
- objekty.shiftX = randint(10, 30)
- --TODO: lower speed
- objekty.speedY = 1
- objekty.speedX = randint(-1, 1)
- objekty.afaze = ship
- objekty:updateAnim()
- end
- end
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky01.ogg")
- local pokus = getRestartCount()
-
- --NOTE: a final level
- small:setGoal("goal_alive")
- big:setGoal("goal_alive")
- buh2:setGoal("goal_out")
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.stavhry = 0
- room.posl = 0
- room.uvod = 0
- room.costim = randint(25, 100)
- room.oholi = 0
- room.opalce = 0
- room.omicich = randint(1200, 4000)
- room.shodit = -1
-
- return function()
- if stdBorderReport() then
- addm(random(10) + 5, "lod-m-bohove")
- end
- if isReady(small) and isReady(big) and no_dialog() then
- if room.costim > 0 then
- room.costim = room.costim - 1
- end
- if room.omicich > 0 then
- room.omicich = room.omicich - 1
- end
- if room.uvod == 0 then
- room.uvod = 1
- switch(random(3)){
- [0] = function()
- addv(randint(10, 20), "lod-v-silenost0")
- end,
- [1] = function()
- addv(randint(10, 20), "lod-v-silenost1")
- end,
- [2] = function()
- addv(randint(10, 20), "lod-v-silenost2")
- end,
- }
- switch(random(3)){
- [0] = function()
- addm(random(5), "lod-m-pravda0")
- end,
- [1] = function()
- addm(random(5), "lod-m-pravda1")
- end,
- [2] = function()
- addm(random(5), "lod-m-pravda2")
- end,
- }
- elseif room.costim == 0 then
- room.costim = -1
- switch(random(2)){
- [0] = function()
- addm(random(5), "lod-m-costim")
- addv(random(5), "lod-v-internovat")
- addm(random(5), "lod-m-co")
- addv(random(5), "lod-v-cvok")
- addm(random(5), "lod-m-oba")
- addv(random(5), "lod-v-golf")
- addm(random(5), "lod-m-jednoho")
- end,
- [1] = function()
- addm(random(5), "lod-m-costim")
- addv(random(5), "lod-v-internovat")
- addm(random(5), "lod-m-oba")
- addv(random(5), "lod-v-golf")
- addm(random(5), "lod-m-jednoho")
- end,
- }
- addv(random(7), "lod-v-koho")
- switch(random(2)){
- [0] = function()
- planSet(big, "hlaska", 1)
- addm(random(3), "lod-m-zluty")
- end,
- [1] = function()
- planSet(big, "hlaska", 2)
- addm(random(3), "lod-m-modry")
- end,
- }
- switch(random(2)){
- [0] = function()
- addm(random(5), "lod-m-hrac")
- end,
- [1] = function()
- addv(random(5), "lod-v-hrac")
- end,
- }
- elseif room.oholi == 0 and hul.dir ~= dir_no and big ~= dir_no and random(100) < 1 then
- room.oholi = 1
- addv(0, "lod-v-hul")
- addm(random(7), "lod-m-ozizlana")
- elseif room.opalce == 0 and random(1000) < 1 then
- room.opalce = 1
- addv(random(10), "lod-v-hravost")
- if palka.X == 23 and palka.Y == 2 then
- addm(random(7), "lod-m-palka")
- end
- elseif room.omicich == 0 then
- room.omicich = -1
- if kriketak.X > 24 and kriketak.Y > 19 then
- addv(random(5), "lod-v-micky")
- addm(random(5), "lod-m-vyznam")
- addv(random(5), "lod-v-kdovi")
- end
- addm(random(5), "lod-m-micek")
- addv(random(5), "lod-v-rozliseni")
- end
- end
- switch(room.stavhry){
- [0] = function()
- initLode()
- buh1.lodi = getNShips()
- buh2.lodi = getNShips()
- room.hraje = 1
- room.stavhry = room.stavhry + 1
- room.cekani = random(10) + 5
- end,
- [1] = function()
- if no_dialog() then
- if room.cekani > 0 then
- room.cekani = room.cekani - 1
- else
- switch(room.hraje){
- [1] = function()
- buh1.cinnost = 1
- end,
- [2] = function()
- buh2.cinnost = 1
- end,
- }
- room.stavhry = 2
- end
- end
- end,
- [2] = function()
- room.stavhry = 1
- if buh2.lodi == 0 then
- planDialogSet(3, "b2-vyhral", 201, buh2, "mluveni")
- room.stavhry = 3
- end
- if buh1.lodi == 0 then
- planDialogSet(8, "b1-vyhral", 101, buh1, "mluveni")
- room.stavhry = 3
- end
- if room.stavhry == 1 then
- room.cekani = random(10) + 5
- else
- room.cekani = random(100) + 100
- switch(random(2)){
- [0] = function()
- planDialogSet(random(30) + 10, "b2-znovu", 201, buh2, "mluveni")
- planDialogSet(random(10) + 5, "b1-dobre", 101, buh1, "mluveni")
- end,
- [1] = function()
- planDialogSet(random(30) + 10, "b1-znovu", 101, buh1, "mluveni")
- planDialogSet(random(10) + 5, "b2-dobre", 201, buh2, "mluveni")
- end,
- }
- end
- end,
- [3] = function()
- if no_dialog() then
- if room.cekani > 0 then
- room.cekani = room.cekani - 1
- else
- planDialogSet(0, "b1-zacinam", 101, buh1, "mluveni")
- room.stavhry = 0
- end
- end
- end,
- }
- if room.shodit >= 0 then
- shinkShip(room.shodit)
- room.shodit = -1
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_buh2()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- buh2.cinnost = 0
- buh2.mluveni = 0
- buh2.cinruky = 0
- buh2.ruka = 0
- buh2.px = 0
- buh2.py = 0
- buh2.lodi = getNShips()
-
- return function()
- switch(buh2.cinnost){
- [1] = function()
- pom1, buh2.px, buh2.py = hrajlode(2)
- buh2.cekat = random(10) + 5
- local arg = string.char(buh2.py - 1 + string.byte("A"))..buh2.px
- planDialogSet(buh2.cekat, "b2-"..string.char(buh2.py - 1 + string.byte("a")).."@"..arg, 201, buh2, "mluveni")
- buh2.cinnost = 2
- buh2.cekat = buh2.cekat + random(4) + 9
- switch(pom1){
- [1] = function()
- adddel(random(20) + 20)
- planSet(buh1, "cinruky", random(3) + 1)
- planDialogSet(0, "b1-voda"..(random(5) + 1), 102, buh1, "mluveni")
- planSet(buh2, "cinruky", random(3) + 1)
- room.hraje = 1
- end,
- [3] = function()
- adddel(random(20) + 20)
- planSet(buh1, "cinruky", random(3) + 3)
- planDialogSet(0, "b1-zasah"..(random(4) + 1), 103, buh1, "mluveni")
- planSet(buh2, "cinruky", random(3) + 3)
- end,
- [4] = function()
- adddel(random(20) + 20)
- planSet(buh1, "cinruky", random(3) + 1)
- planDialogSet(0, "b1-potop"..(random(3) + 1), 104, buh1, "mluveni")
- planSet(buh1, "cinruky", -random(10) - 5)
- planSet(buh2, "cinruky", -random(10) - 5)
- buh2.lodi = buh2.lodi - 1
- planSet(room, "shodit", getLastHit())
- end,
- [5] = function()
- planDialogSet(random(20) + 20, "b1-voda"..(random(5) + 1), 102, buh1, "mluveni")
- adddel(5)
- planSet(buh2, "mluveni", 3)
- planDialogSet(10 + random(10), "b2-podvadis", 220, buh2, "mluveni")
- planDialogSet(8, "b2-"..string.char(buh2.py - 1 + string.byte("a")).."@"..arg, 220, buh2, "mluveni")
- planDialogSet(0, "b2-"..buh2.px, 220, buh2, "mluveni")
- planDialogSet(0, "b2-nemuze", 220, buh2, "mluveni")
- planDialogSet(random(30) + 10, "b1-spletl", 105, buh1, "mluveni")
- planDialogSet(random(5) + 5, "b1-potop"..(random(3) + 1), 104, buh1, "mluveni")
- buh2.lodi = buh2.lodi - 1
- planSet(room, "shodit", getLastHit())
- end,
- [6] = function()
- planDialogSet(random(20) + 20, "b1-zasah"..(random(4) + 1), 103, buh1, "mluveni")
- planDialogSet(random(10), "b2-podvadis", 220, buh2, "mluveni")
- planDialogSet(random(10), "b2-spatne", 220, buh2, "mluveni")
- switch(random(2)){
- [0] = function()
- planDialogSet(random(30) + 10, "b1-spletl", 105, buh1, "mluveni")
- end,
- [1] = function()
- planDialogSet(random(5) + 2, "b1-nepodvadim", 106, buh1, "mluveni")
- end,
- }
- end,
- [7] = function()
- planDialogSet(random(20) + 20, "b1-potop"..(random(3) + 1), 104, buh1, "mluveni")
- planDialogSet(random(10), "b2-podvadis", 220, buh2, "mluveni")
- planDialogSet(random(10), "b2-spatne", 220, buh2, "mluveni")
- switch(random(2)){
- [0] = function()
- planDialogSet(random(30) + 10, "b1-spletl", 105, buh1, "mluveni")
- end,
- [1] = function()
- planDialogSet(random(5) + 2, "b1-nepodvadim", 106, buh1, "mluveni")
- end,
- }
- buh2.lodi = buh2.lodi - 1
- planSet(room, "shodit", getLastHit())
- end,
- }
- end,
- [2] = function()
- if buh2.cekat > 0 then
- buh2.cekat = buh2.cekat - 1
- else
- buh2:talk("b2-"..buh2.px, 201)
- buh2.cinnost = 0
- end
- end,
- }
- switch(buh2.mluveni){
- [0] = function()
- if not isIn(buh2.xicht, {3, 4, 6, 7}) or random(100) < 4 then
- buh2.xicht = random(6) + 3
- if buh2.xicht == 5 or buh2.xicht == 8 then
- buh2.xicht = 3
- end
- end
- end,
- [1] = function()
- if not isIn(buh2.xicht, {8, 9}) or random(100) < 3 then
- buh2.xicht = 8 + random(2)
- buh2.afaze = buh2.xicht + buh2.ruka * 10
- end
- end,
- [2] = function()
- if not isIn(buh2.xicht, {0, 1}) or random(100) < 5 then
- buh2.xicht = random(2)
- end
- end,
- [3] = function()
- if not isIn(buh2.xicht, {1, 2}) or random(100) < 5 then
- buh2.xicht = random(2) + 1
- end
- end,
- [220] = function()
- if buh2.xicht == 5 then
- buh2.xicht = 6
- else
- buh2.xicht = 5
- end
- end,
- default = function()
- if 200 <= buh2.mluveni and buh2.mluveni <= 219 then
- if odd(game_getCycles()) then
- buh2.xicht = random(3)
- end
- end
- end,
- }
- if buh2.mluveni == 0 or buh2.mluveni == 1 or (200 <= buh2.mluveni and buh2.mluveni <= 220) then
- if buh2.ruka > 3 then
- buh2.ruka = random(4)
- end
- if buh2.cinruky == 0 then
- if random(100) < 2 then
- buh2.ruka = random(4)
- end
- elseif buh2.cinruky > 0 then
- if math.mod(game_getCycles(), 3) == 0 then
- if random(100) < 30 then
- buh2.ruka = xor1(buh2.ruka)
- else
- buh2.ruka = xor2(buh2.ruka)
- end
- buh2.cinruky = buh2.cinruky - 1
- end
- else
- if random(100) < 30 then
- buh2.ruka = xor1(buh2.ruka)
- else
- buh2.ruka = xor2(buh2.ruka)
- end
- buh2.cinruky = buh2.cinruky + 1
- end
- buh2.afaze = buh2.ruka * 10 + buh2.xicht
- elseif buh2.mluveni == 2 or buh2.mluveni == 3 then
- if not isIn(buh2.ruka, {4, 5, 6}) or odd(game_getCycles()) and random(100) < 30 then
- buh2.ruka = random(3) + 4
- end
- if buh2.ruka == 4 then
- switch(buh2.xicht){
- [0] = function()
- buh2.afaze = 0
- end,
- [1] = function()
- buh2.afaze = 6
- end,
- [2] = function()
- buh2.afaze = 9
- end,
- }
- else
- buh2.afaze = buh2.ruka * 3 + 25 + buh2.xicht
- end
- end
- buh2:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_buh1()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- buh1.cinnost = 0
- buh1.ruka = 0
- buh1.oci = 0
- buh1.pusa = 0
- buh1.mluveni = 0
- buh1.cinruky = 0
- buh1.px = 0
- buh1.py = 0
- buh1.lodi = getNShips()
-
- return function()
- switch(buh1.cinnost){
- [1] = function()
- pom1, buh1.px, buh1.py = hrajlode(1)
- buh1.cekat = random(10) + 5
- local arg = string.char(buh1.py - 1 + string.byte("A"))..buh1.px
- planDialogSet(buh1.cekat, "b1-"..string.char(buh1.py - 1 + string.byte("a")).."@"..arg, 101, buh1, "mluveni")
- buh1.cinnost = 2
- buh1.cekat = buh1.cekat + random(4) + 9
- switch(pom1){
- [1] = function()
- adddel(random(20) + 20)
- planSet(buh2, "cinruky", random(2) + 1)
- planDialogSet(0, "b2-voda"..(random(5) + 1), 202, buh2, "mluveni")
- planSet(buh1, "cinruky", random(2) + 1)
- room.hraje = 2
- end,
- [3] = function()
- adddel(random(20) + 20)
- planSet(buh2, "cinruky", random(3) + 2)
- planDialogSet(0, "b2-zasah"..(random(4) + 1), 203, buh2, "mluveni")
- if random(3) == 0 then
- planSet(buh2, "mluveni", 1)
- end
- planSet(buh1, "cinruky", random(3) + 2)
- end,
- [4] = function()
- adddel(random(20) + 20)
- planSet(buh2, "cinruky", random(3) + 1)
- planDialogSet(0, "b2-potop"..(random(3) + 1), 204, buh2, "mluveni")
- if random(3) ~= 0 then
- planSet(buh2, "mluveni", 1)
- end
- planSet(buh1, "cinruky", -random(7) - 5)
- planSet(buh2, "cinruky", -random(7) - 5)
- buh1.lodi = buh1.lodi - 1
- planSet(room, "shodit", getLastHit())
- end,
- [8] = function()
- adddel(10 + random(10))
- planSet(buh2, "mluveni", 2)
- planDialogSet(random(15) + 10, "b2-rikal"..(random(2) + 1), 205, buh2, "mluveni")
- planDialogSet(1, "b2-voda1", 201, buh2, "mluveni")
- room.hraje = 2
- end,
- [9] = function()
- adddel(10 + random(10))
- planSet(buh2, "mluveni", 2)
- planDialogSet(random(15) + 10, "b2-rikal"..(random(2) + 1), 201, buh2, "mluveni")
- end,
- }
- end,
- [2] = function()
- if buh1.cekat > 0 then
- buh1.cekat = buh1.cekat - 1
- else
- buh1:talk("b1-"..buh1.px, 101)
- buh1.cinnost = 0
- end
- end,
- }
- if buh1.mluveni > 100 then
- if odd(game_getCycles()) and buh1.mluveni > 101 or math.mod(game_getCycles(), 4) == 1 then
- if random(2) == 1 then
- buh1.pusa = math.mod(buh1.pusa + 1, 3)
- else
- buh1.pusa = math.mod(buh1.pusa + 2, 3)
- end
- end
- end
- switch(buh1.mluveni){
- [0] = function()
- if buh2.mluveni > 0 then
- buh1.pusa = 0
- else
- buh1.pusa = 0
- end
- if random(100) < 3 then
- buh1.oci = random(2)
- end
- end,
- [105] = function()
- if room.posl ~= buh1.mluveni then
- buh1.oci = 0
- end
- room.posl = buh1.mluveni
- end,
- [106] = function()
- if room.posl ~= buh1.mluveni then
- buh1.oci = 2
- end
- room.posl = buh1.mluveni
- end,
- default = function()
- if isIn(buh1.mluveni, {101, 102}) then
- if room.posl ~= buh1.mluveni then
- buh1.oci = math.floor(random(3) / 2)
- elseif random(100) < 3 then
- buh1.oci = 1 - buh1.oci
- end
- room.posl = buh1.mluveni
- elseif isIn(buh1.mluveni, {103, 104}) then
- if room.posl ~= buh1.mluveni then
- buh1.oci = 2 - math.floor(random(3) / 2)
- elseif random(100) < 3 then
- buh1.oci = 3 - buh1.oci
- end
- room.posl = buh1.mluveni
- end
- end,
- }
- if buh1.cinruky == 0 then
- if random(100) < 4 then
- buh1.ruka = random(4)
- end
- elseif buh1.cinruky > 0 then
- if math.mod(game_getCycles(), 2) == 0 then
- pom1 = random(3)
- if pom1 == buh1.ruka then
- pom1 = 3
- end
- buh1.ruka = pom1
- buh1.cinruky = buh1.cinruky - 1
- end
- else
- pom1 = random(3)
- if pom1 == buh1.ruka then
- pom1 = 3
- end
- buh1.ruka = pom1
- buh1.cinruky = buh1.cinruky + 1
- end
- buh1.afaze = buh1.ruka * 12 + buh1.oci * 4 + buh1.pusa
- buh1:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_big()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- big.hlaska = 0
-
- return function()
- switch(big.hlaska){
- [1] = function()
- big:talk("lod-v-modry")
- end,
- [2] = function()
- big:talk("lod-v-zluty")
- end,
- }
- big.hlaska = 0
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_objekty()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- objekty.afaze = -1
- objekty:setEffect("invisible")
-
- return function()
- if objekty.afaze >= 0 then
- model_setViewShift(objekty.index,
- objekty.shiftX, objekty.shiftY)
- objekty.shiftY = objekty.shiftY + objekty.speedY
- objekty.shiftX = objekty.shiftX + objekty.speedX
-
- if objekty.shiftY >= room:getH() then
- objekty.afaze = -1
- objekty:setEffect("invisible")
- end
- end
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_buh2()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_buh1()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_big()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_objekty()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-